package com.rshang.rsdp.service;

import com.rshang.rsdp.bean.DataGrid;
import com.rshang.rsdp.bean.Response;
import com.rshang.rsdp.entity.TbRsdlRyxx;

import java.util.HashMap;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import com.rshang.rsdp.entity.TbUser;
import org.apache.poi.ss.usermodel.Workbook;

import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import org.springframework.web.multipart.MultipartFile;

/**
 * <p>
 * 人员信息表 服务类
 * </p>
 *
 * @author zhangjun
 * @since 2017-08-20
 */
public interface ITbRsdlRyxxService extends IService<TbRsdlRyxx> {
	
	/**
	 * 月报查询
	 * @param page		分页对象
	 * @param request	HttpServletRequest对象
	 * @param czr		操作人
	 * @param isManager	是否经理
	 * @return
	 * 		DataGrid
	 */
	public DataGrid getYbcxList(Page<HashMap> page,HttpServletRequest request,String czr,boolean isManager);
	
	/**
	 * 月报查询导出
	 * @param request	HttpServletRequest对象
	 * @param czr		操作人
	 * @param isManager	是否经理
	 * @return
	 * 		Workbook
	 */
	public Workbook ybcxListExport(HttpServletRequest request,String czr,boolean isManager);
	
	
	/**
	 * 获取首页小图表查询统计
	 * @param czr		操作人
	 * @param isManager	是否业务经理
	 * @return
	 * 		HashMap
	 */
	public HashMap getZsTbTj(String czr,boolean isManager);
	
	/**
	 * 获取在职人数年度统计
	 * @param czr		操作人
	 * @param manager	是否管理员
	 * @return
	 * 		HashMap
	 */
	public HashMap getZzNdTj(String czr,boolean manager);
	
	/**
	 * 根据操作人、公司、小公司获取人员信息
	 * @param request	HttpServletRequest对象
	 * @param czr		操作人
	 * @return
	 * 		List<HashMap>
	 */
	public List<HashMap> getRyxxByCzr(HttpServletRequest request,String czr);
	
	/**
	 * 人员分页查询
	 * @param page		分页对象
	 * @param request	HttpServletRequest对象
	 * @param czr		操作人 管理员为空
	 * @param lx			查询类型 空表示全部 lz表示离职 wb表示未办
	 * @return
	 * 		DataGrid
	 */
	public DataGrid getRyxxList(Page<HashMap> page,HttpServletRequest request,String czr,String lx);


	/**
	 * 新增保存方法
	 * @param request	HttpServletRequest对象
	 * @param czr		操作人
	 * @return
	 * 		Response
	 */
	public Response addSave(HttpServletRequest request,String czr);

	/**
	 * 根据id获取信息
	 * @param request	HttpServletRequest对象
	 * @return
	 * 		TbRsdlRyxx
	 */
	public TbRsdlRyxx get(HttpServletRequest request);


	/**
	 * 编辑保存方法
	 * @param request	HttpServletRequest对象
	 * @param czr		操作人
	 * @param czrMc		操作人姓名
	 * @return
	 * 		Response
	 */
	public Response editSave(HttpServletRequest request,String czr,String czrMc);

	/**
	 * 删除保存方法
	 * @param request	HttpServletRequest对象
	 * @param czr		操作人
	 * @return
	 * 		Response
	 */
	public Response deleteSave(HttpServletRequest request,String czr);

    /**
     * 撤销委托保存方法
     * @param request	HttpServletRequest对象
     * @param czr		操作人
     * @return
     * 		Response
     */
    public Response cxwtSave(HttpServletRequest request,String czr);

	/**
	 * 校验账号编号
	 * @param request	HttpServletRequest对象
	 * @return
	 * 		Response
	 */
	public Response checkRyxm(HttpServletRequest request);

	/**
	 * 离职保存方法
	 * @param request	HttpServletRequest对象
	 * @param czr		操作人
	 * @return
	 * 		Response
	 */
	public Response rylzSave(HttpServletRequest request,String czr);
	
	/**
	 * 社保、公积金年度基数批量修改保存方法
	 * @param request	HttpServletRequest对象
	 * @param czr		操作人
	 * @param czrMc		操作人姓名
	 * @return
	 * 		Response
	 */
	public Response ryBgjsSave(HttpServletRequest request,String czr,String czrMc);

	/**
	 * 人员分页查询导出
	 * @param request	HttpServletRequest对象
	 * @param czr		操作人 管理员为空
	 * @param lx		查询类型 空表示全部 lz表示离职 wb表示未办
	 * @return
	 * 		List<HashMap>
	 */
	public List<HashMap> getRyxxListExport(HttpServletRequest request,String czr,String lx);


	/**
	 * 人员excel导出
	 * @param request	HttpServletRequest对象
	 * @param czr		操作人
	 * @param lx		查询类型 空表示全部 lz表示离职 wb表示未办
	 * @return
	 * 		Workbook
	 */
	public Workbook ryListExcelExport(HttpServletRequest request,String czr,String lx);


	/**
	 * 未办保存方法
	 * @param request	HttpServletRequest对象
	 * @param czr		操作人
	 * @return
	 * 		Response
	 */
	public Response wbSave(HttpServletRequest request,String czr);

	/**
	 * 人员解聘方法
	 * @param request	HttpServletRequest对象
	 * @param czr		操作人
	 * @return
	 * 		Response
	 */
	public Response ryjpSave(HttpServletRequest request,String czr);

	/**
	 * 人员异常保存方法
	 * @param request	HttpServletRequest对象
	 * @param czr		操作人
     * @param type		操作类型 0表示离职异常 1表示待解聘异常
	 * @return
	 * 		Response
	 */
	public Response ryycSave(HttpServletRequest request,String czr,String type);

    /**
     * 人员待解聘保存方法
     * @param request	HttpServletRequest对象
     * @param czr		操作人
     * @return
     * 		Response
     */
    public Response ryDjpSave(HttpServletRequest request,String czr);


	/**
	 * 人员模板导入保存方法
	 * @param file	HttpServletRequest对象
	 * @param user		session中用户对象
	 * @param isManager	是否管理员 true为管理员
     * @return
	 * 		Response
     */
	public Response ryxxImportSave(MultipartFile file, TbUser user, boolean isManager);
	
	/**
	 * 获取人员历史纪录
	 * @param ryId	人员id
	 * @return	List<HashMap>
	 */
	public List<HashMap> getRyHistory(String ryId);
	
	/**
	 * 人员解聘分页查询
	 * @param page		分页对象
	 * @param request	HttpServletRequest对象
	 * @param czr		操作人 管理员为空
	 * @return
	 * 		DataGrid
	 */
	public DataGrid getRyxxJpList(Page<HashMap> page,HttpServletRequest request,String czr);
	/**
	 * 解聘人员excel导出
	 * @param request	HttpServletRequest对象
	 * @param czr		操作人
	 * @return
	 * 		Workbook
	 */
	public Workbook ryjpListExcelExport(HttpServletRequest request, String czr);
	/**
	 * 调整纪录-人员分页查询
	 * @param page		分页对象
	 * @param request	HttpServletRequest对象
	 * @param czr		操作人 管理员为空
	 * @return
	 * 		DataGrid
	 */
	public DataGrid getRycxPageList(Page page, HttpServletRequest request, String czr);
}
